package cultivameCore.entorno;

import cultivameCore.articulos.extensionesInterior.Extractor;
import cultivameCore.tienda.Negociable;

public class Armario extends Entorno implements Negociable{
	
	private float volumen;//l/dm3
	private float masaAgua;//g
	private float precio;
	private Extractor extractor=null;
	
	
	public Armario(float volL,float euros) {
		// TODO Auto-generated constructor stub
		masaAgua=0;
		luz=null;
		volumen=volL;
		temperatura=0;
		presion=1;
		humedad=masaAgua*0.082f*(temperatura+273)/18/volumen;
		precio=euros;
	}

	public float getHumedad() {
		return humedad;
	}

	public void setMasaAgua(float masaAgua) {
		this.masaAgua = masaAgua;
		humedad=masaAgua*0.082f*(temperatura+273)/18/volumen;
	}
	
	public float getMasaAgua() {
		return masaAgua;
	}

	public float getVolumen() {
		return volumen;
	}

	public void setLuz(Foco foco) {
		// TODO Auto-generated method stub
		luz=foco;
	}


	public float getPrecio() {
		// TODO Auto-generated method stub
		return precio;
	}


	public void setPrecio(float precio) {
		// TODO Auto-generated method stub
		this.precio=precio;
	}


	public float getPresion() {
		// TODO Auto-generated method stub
		return presion;
	}


	public float getTemperatura() {
		// TODO Auto-generated method stub
		return temperatura;
	}

	public Extractor getExtractor() {
		return extractor;
	}

	public void setExtractor(Extractor extractor) {
		this.extractor = extractor;
	}
	
	public String toString(){
		
		String s= "***********************************************\n"+
			      "** ENTORNO:                                  **\n"+
			      "** Humedad: "+humedad+" temperatura: "+temperatura+"             **\n";
		try {
			s+=luz.toString()+"\n";
			s+=extractor.toString()+"\n";
		} catch (Exception e) {
		}
		
		s+="***********************************************\n";
		return s;
	}

	public void actualizar(int ms) {
		// TODO Auto-generated method stub
		Foco f=(Foco)luz;
		if (f!=null) {
			f.setContador(f.getContador() + (float) ms / 1000 / 60 / 60);
			//ACELERADO 1seg=1h
			//f.setContador(f.getContador()+60*60*(float)ms/1000/60/60);
			if (f.isEncendido()) {
				if (f.getContador() > f.getH_luz()) {
					f.setEncendido(false);
				}
				temperatura+=0.05;
			} else {
				if (f.getContador() > f.getH_noche()) {
					f.setEncendido(true);
				}
			}
		}
		//actualizamos la Humedad dependiendo de si tenemos extractor o no
		if(extractor!=null){
			float vaire_sacado=extractor.getVelExtrac()/60/60/1000*ms;
			float vagua_sacada=humedad*vaire_sacado;
			float maguaSacada=presion*vagua_sacada*18/0.082f/(temperatura+273);
			//tambi�n se actualiza la humedad
			setMasaAgua(masaAgua-maguaSacada);
		}
	}

	public Luz getLuz() {
		// TODO Auto-generated method stub
		return luz;
	}
}
